↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
REVERSE_IN_AG(.(X, Xs), Ys) → U2_AG(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AG(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
REVERSE_IN_AA(.(X, Xs), Ys) → U2_AA(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AA(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_GGA(Zs, .(X, []), Ys)
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U1_GGA(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AG(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_GGG(Zs, .(X, []), Ys)
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → U1_GGG(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
REVERSE_IN_AG(.(X, Xs), Ys) → U2_AG(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AG(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
REVERSE_IN_AA(.(X, Xs), Ys) → U2_AA(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AA(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_GGA(Zs, .(X, []), Ys)
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U1_GGA(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AG(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_GGG(Zs, .(X, []), Ys)
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → U1_GGG(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGG(.(Xs), Ys, .(Zs)) → APP_IN_GGG(Xs, Ys, Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_GGA(.(Xs), Ys) → APP_IN_GGA(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
REVERSE_IN_AA → REVERSE_IN_AA
REVERSE_IN_AA → REVERSE_IN_AA
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
REVERSE_IN_AG(.(X, Xs), Ys) → U2_AG(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AG(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
REVERSE_IN_AA(.(X, Xs), Ys) → U2_AA(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AA(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_GGA(Zs, .(X, []), Ys)
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U1_GGA(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AG(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_GGG(Zs, .(X, []), Ys)
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → U1_GGG(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
REVERSE_IN_AG(.(X, Xs), Ys) → U2_AG(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AG(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
REVERSE_IN_AA(.(X, Xs), Ys) → U2_AA(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AA(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_GGA(Zs, .(X, []), Ys)
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → U1_GGA(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AG(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_GGG(Zs, .(X, []), Ys)
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → U1_GGG(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
APP_IN_GGG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
APP_IN_GGG(.(Xs), Ys, .(Zs)) → APP_IN_GGG(Xs, Ys, Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APP_IN_GGA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_GGA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APP_IN_GGA(.(Xs), Ys) → APP_IN_GGA(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_gga(Zs, .(X, []), Ys))
app_in_gga(.(X, Xs), Ys, .(X, Zs)) → U1_gga(X, Xs, Ys, Zs, app_in_gga(Xs, Ys, Zs))
app_in_gga([], Ys, Ys) → app_out_gga([], Ys, Ys)
U1_gga(X, Xs, Ys, Zs, app_out_gga(Xs, Ys, Zs)) → app_out_gga(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_gga(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_ggg(Zs, .(X, []), Ys))
app_in_ggg(.(X, Xs), Ys, .(X, Zs)) → U1_ggg(X, Xs, Ys, Zs, app_in_ggg(Xs, Ys, Zs))
app_in_ggg([], Ys, Ys) → app_out_ggg([], Ys, Ys)
U1_ggg(X, Xs, Ys, Zs, app_out_ggg(Xs, Ys, Zs)) → app_out_ggg(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_ggg(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
REVERSE_IN_AA → REVERSE_IN_AA
REVERSE_IN_AA → REVERSE_IN_AA